package com.iedu.demo.lgq.mapper;

import com.iedu.demo.lgq.entity.TbCart;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface CartMapper {

    // 添加商品到购物车
    // 根据 userId 和 productId 查找购物车中的商品
    @Select("SELECT * FROM tb_cart WHERE user_name = #{userName} AND item_id = #{itemId}")
    TbCart findCartByUserNameAndItemId(@Param("userName") String userName, @Param("itemId") String itemId);

    // 更新购物车中的商品
    @Update("UPDATE tb_cart SET quantity = #{quantity} WHERE user_name = #{userName} AND item_id = #{itemId}")
    void updateCart(TbCart cart);

    // 插入新的购物车记录
    @Insert("INSERT INTO tb_cart(user_name,item_title,item_id,quantity,price,status) VALUES(#{userName},#{itemTitle}, #{itemId}, #{quantity},#{price},#{status})")
    void insertCart(TbCart cart);

    // 查看某个用户的所有购物车商品
    @Select("SELECT * FROM tb_cart WHERE user_name = #{userName} AND status = 1")
    List<TbCart> getCartItemsByUserName(String userName);

    // 根据购物车ID获取商品
    @Select("SELECT * FROM tb_cart WHERE id = #{id}")
    TbCart getCartItemById(Long id);

    // 更新购物车中商品的数量
    @Update("UPDATE tb_cart SET quantity = #{quantity}, updated = NOW() WHERE id = #{id}")
    int updateCartItemQuantity(@Param("id") Long id, @Param("quantity") int quantity);

    // 删除购物车中的商品（将状态改为2）
    @Update("UPDATE tb_cart SET status = 2, updated = NOW() WHERE id = #{id}")
    int deleteCartItem(Long id);

    // 批量删除购物车商品
    @Update("<script>" +
            "UPDATE tb_cart SET status = 2, updated = NOW() WHERE id IN " +
            "<foreach item='item' collection='ids' open='(' separator=',' close=')'>" +
            "#{item}" +
            "</foreach>" +
            "</script>")
    int batchDeleteCartItems(@Param("ids") List<Long> ids);

    // 购买购物车商品
    @Update("UPDATE tb_cart SET status = 2, updated = NOW() WHERE id = #{id}")
    int purchaseCartItem(Long id);
}
